package com.LeeCode;

import java.util.List;

/**
 * 三角形最小路径和
 */

public class Code120 {
    public static void main(String[] args) {

    }

    public int minimumTotal(List<List<Integer>> triangle) {
        int m = triangle.size();
        for (int i = 1; i < m; i++) {
            int n = triangle.get(i).size();
            for (int j = 0; j < n; j++) {
                if (j == 0) {
                    triangle.get(i).set(j, triangle.get(i - 1).get(j) + triangle.get(i).get(j));
                } else if (j == n - 1) {
                    triangle.get(i).set(j, triangle.get(i - 1).get(j - 1) + triangle.get(i).get(j));
                } else {
                    triangle.get(i).set(j, triangle.get(i).get(j) + Math.min(triangle.get(i - 1).get(j), triangle.get(i - 1).get(j - 1)));
                }
            }
        }
        int n = triangle.get(m - 1).size();
        int ans = Integer.MAX_VALUE;
        for(int i = 0; i < n; i++) {
            ans = Math.min(ans, triangle.get(m - 1).get(i));
        }
        return ans;
    }
}
